#include "point.h"

Point::Point(){}

Point::Point(int x, int y)
{
	this->init(x,y);
}


// pour re-initialisation
void Point::init(int x, int y)
{
	coordonneeX = x;
	coordonneeY = y;
}

// pour re-initialisation
void Point::init(Point _p)
{
	coordonneeX = _p.coordonneeX;
	coordonneeY = _p.coordonneeY;
}

// pour obtenir les valeurs du Point
int Point::valX()
{
	return coordonneeX;
}

int Point::valY()
{
	return coordonneeY;
}

//Fonction pour faire tourner un Point autour d'un centre
void Point::rotation(Point centre, double angleRadian)
{
	int tmpX, tmpY;

	tmpX = (int)(((coordonneeX - centre.valX()) * cos(angleRadian)) + ((coordonneeY - centre.valY()) * sin(angleRadian)));
	tmpY = (int)(((coordonneeY - centre.valY()) * cos(angleRadian)) - ((coordonneeX - centre.valX()) * sin(angleRadian)));

	coordonneeX = centre.valX() + tmpX;
	coordonneeY = centre.valY() + tmpY;

}

// fonction pour deplacer un Point en absolu.  Les parametres sont des
// deplacement par rapport a la position courante.
void Point::deplacement(int deltaX, int deltaY)
{
	coordonneeX += deltaX;
	coordonneeY += deltaY;
}

// fonction pour deplacer un Point proportionnellement a un centre.
// Les parametres sont le Point de reference un la proportion du deplacement
void Point::modif_taille(Point ancre, float proportion)
{
	coordonneeX = (int)((coordonneeX - ancre.coordonneeX) * proportion) + ancre.coordonneeX;
	coordonneeY = (int)((coordonneeY - ancre.coordonneeY) * proportion) + ancre.coordonneeY;
}

//Point Point::operator=(Point _p1)
//{
//	Point p;
//	p.coordonneeX = _p1.coordonneeX;
//	p.coordonneeY = _p1.coordonneeY;
//
//	return p;
//}
